// pages/cart/cart.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 购物车列表
    shopCatList: [],
    // 地址
    address: {},
    // 选择的列表
    checkList: [],
    // 选择的商品个数
    selectCount: 0,
    // 总价
    totalPrice: 0,
    // 全选
    allCheck: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    
  },

  // 取消全选
  cancelCheck(){
    this.data.shopCatList.map(item => {
      item.checked = false;
    })
    this.setData({
      allCheck: false,
      totalPrice: 0,
      selectCount: 0,
      checkList: [],
      shopCatList: this.data.shopCatList
    });
  },
  // 全选
  checkAll(e){
      // 如果已经全选
      if(this.data.allCheck){
        // 全部变成未选
        this.cancelCheck()
      } else {
        let allPrice = 0;
        let sum = 0;
        let idArr = [];
        // 全部变成已选
        this.data.shopCatList.map(item => {
          sum += item.count;
          allPrice += item.goods_price;
          item.checked = true;
          if(this.data.checkList.indexOf(String(item.goods_id)) === -1){
            // console.log(item.goods_id);
            // 将已选的id加入已选列表中
            idArr.push(String(item.goods_id))
          }
        })
        // console.log(this.data.shopCatList)
        this.setData({
          allCheck: true,
          totalPrice: allPrice,
          selectCount: sum,
          checkList: this.data.checkList.concat(idArr),
          shopCatList: this.data.shopCatList
        })
      }
    wx.setStorageSync('shopCatList', this.data.shopCatList);
    wx.setStorageSync('checkList', this.data.checkList);
  },
  // 单选
  checks(e){
    this.setData({
      checkList: e.detail.value
    });
    wx.setStorageSync('checkList', this.data.checkList);
    // 判断是否全选，是就勾选全选按钮
    if(this.data.checkList.length === this.data.shopCatList.length){
      this.setData({
        allCheck: true
      })
    } else {
      this.setData({
        allCheck: false
      })
    }

    this.changeAllNum()
  },
  // 根据已选id列表，计算选中的商品总个数,计算总价
  changeAllNum(){
    let idArr = this.data.checkList;
    let len = this.data.shopCatList.length;
    let sum = 0;
    let allPrice = 0;
    if(idArr.length === 0){
      this.cancelCheck();
    } else {
      for(let i = 0; i<idArr.length; i++){
        for(let j = 0; j<len; j++){
          // 第一边的时候全部变成false
          if(i === 0){
            this.data.shopCatList[j].checked = false;
          }
          if(idArr[i] == this.data.shopCatList[j].goods_id){
            this.data.shopCatList[j].checked = true;
            // 总数
            sum = sum + this.data.shopCatList[j].count;
            // 总价
            allPrice = allPrice + this.data.shopCatList[j].count * this.data.shopCatList[j].goods_price;   
            // break;
          }
        }
      }
    }
    // console.log(this.data.shopCatList)
    this.setData({
      totalPrice: allPrice,
      selectCount: sum,
      shopCatList: this.data.shopCatList
    });
    wx.setStorageSync('shopCatList', this.data.shopCatList)
  },
  // 改变商品数量
  changeGoodsCount(_id, num){
    let len = this.data.shopCatList.length;
    for(let i = 0; i<len; i++){
      if(_id === this.data.shopCatList[i].goods_id){
        this.data.shopCatList[i].count = num;
        this.setData({
          shopCatList: this.data.shopCatList
        })
        // console.log(this.data.shopCatList)
        // 计算选中的总个数
        this.changeAllNum();
        // 改变缓存数据
        wx.setStorageSync('shopCatList', this.data.shopCatList)
        break;
      }
    }
  },
  // 删除商品
  removeGoods(_id){
    let len = this.data.shopCatList.length;
    for(let i = 0; i<len; i++){
      if(_id === this.data.shopCatList[i].goods_id){
        this.data.shopCatList.splice(i,1)
        this.setData({
          shopCatList: this.data.shopCatList
        })
        // console.log(this.data.shopCatList)
        wx.setStorageSync('shopCatList', this.data.shopCatList)
        // 再次计算总价和总数
        this.changeAllNum();
        break;
      }
    }
  },
  // 商品数量改变时调用
  goodsChange(e){
    // 返回一个对象，包括id、数量、总价格
    // console.log(e.detail)
    let tempObj = e.detail;
    if(tempObj.count){
      this.changeGoodsCount(tempObj.id, tempObj.count);
    } else {
      this.removeGoods(tempObj.id);
    }
  },
  // 获取地址
  getAddress(e){
    this.setData({
      address: e.detail
    });
    wx.setStorageSync('address', e.detail);
    console.log(this.data.address)
  },
  // 获取购物车信息
  getShopList(){
    this.setData({
      shopCatList: wx.getStorageSync('shopCatList'),
      address: wx.getStorageSync('address')
    });
    console.log(this.data.shopCatList)
    // console.log(this.data.address)
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    this.checkAll();
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    this.getShopList();
    
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})